/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * FormAberturaChamados.java
 *
 * Created on 06/12/2011, 01:13:30
 */

package sistemachamados.view;


import java.util.ArrayList;
import classes.*;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JDialog;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author Cleber Lopes
 */
public class FormCidades extends javax.swing.JInternalFrame {
//public class FormAberturaChamados extends JDialog {
    /** Creates new form FormAberturaChamados */

    private Usuario usuarioLogado;

    public FormCidades(Usuario usuarioLogado) {
        initComponents();
        this.usuarioLogado = usuarioLogado;
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        txtCidadePesq = new javax.swing.JTextField();
        jLabel2 = new javax.swing.JLabel();
        cmbEstadoPesq = new javax.swing.JComboBox();
        btnPesquisar = new javax.swing.JButton();
        btnLimpar = new javax.swing.JButton();
        jPanel2 = new javax.swing.JPanel();
        btnExcluir = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        tblCidades = new javax.swing.JTable();
        btnIncluir = new javax.swing.JButton();
        btnAlterar = new javax.swing.JButton();
        jPanel3 = new javax.swing.JPanel();
        jLabel3 = new javax.swing.JLabel();
        jLabel4 = new javax.swing.JLabel();
        txtCidade = new javax.swing.JTextField();
        cmbEstado = new javax.swing.JComboBox();
        btnCancelar = new javax.swing.JButton();
        jLabel5 = new javax.swing.JLabel();

        setBorder(null);
        setClosable(true);
        setFrameIcon(null);
        setInheritsPopupMenu(true);
        setMinimumSize(new java.awt.Dimension(990, 470));
        setPreferredSize(new java.awt.Dimension(990, 470));
        addComponentListener(new java.awt.event.ComponentAdapter() {
            public void componentShown(java.awt.event.ComponentEvent evt) {
                formComponentShown(evt);
            }
        });
        getContentPane().setLayout(null);

        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "FILTROS DE PESQUISA", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Showcard Gothic", 0, 16))); // NOI18N
        org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance().getContext().getResourceMap(FormCidades.class);
        jPanel1.setFont(resourceMap.getFont("jPanel1.font")); // NOI18N
        jPanel1.setName("jPanel1"); // NOI18N
        jPanel1.setOpaque(false);

        jLabel1.setFont(new java.awt.Font("Gautami", 3, 16));
        jLabel1.setText("Cidade");
        jLabel1.setName("jLabel1"); // NOI18N

        txtCidadePesq.setFont(new java.awt.Font("Tahoma", 0, 14));
        txtCidadePesq.setName("txtCidadePesq"); // NOI18N
        txtCidadePesq.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                txtCidadePesqActionPerformed(evt);
            }
        });

        jLabel2.setFont(new java.awt.Font("Gautami", 3, 16));
        jLabel2.setText("Estado");
        jLabel2.setName("jLabel2"); // NOI18N

        cmbEstadoPesq.setFont(new java.awt.Font("Century Gothic", 0, 14));
        cmbEstadoPesq.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Todos" }));
        cmbEstadoPesq.setName("cmbEstadoPesq"); // NOI18N

        btnPesquisar.setFont(new java.awt.Font("Berlin Sans FB Demi", 0, 14));
        btnPesquisar.setText("Pesquisar");
        btnPesquisar.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
        btnPesquisar.setName("btnPesquisar"); // NOI18N

        btnLimpar.setFont(new java.awt.Font("Berlin Sans FB Demi", 0, 14)); // NOI18N
        btnLimpar.setText("Limpar");
        btnLimpar.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
        btnLimpar.setName("btnLimpar"); // NOI18N
        btnLimpar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnLimparActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 61, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(txtCidadePesq, javax.swing.GroupLayout.PREFERRED_SIZE, 212, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(39, 39, 39)
                .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 58, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(cmbEstadoPesq, javax.swing.GroupLayout.PREFERRED_SIZE, 136, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 174, Short.MAX_VALUE)
                .addComponent(btnPesquisar)
                .addGap(18, 18, 18)
                .addComponent(btnLimpar, javax.swing.GroupLayout.PREFERRED_SIZE, 96, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(45, 45, 45))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
                .addContainerGap(17, Short.MAX_VALUE)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel2)
                    .addComponent(btnLimpar)
                    .addComponent(btnPesquisar)
                    .addComponent(cmbEstadoPesq, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(txtCidadePesq, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel1)))
        );

        getContentPane().add(jPanel1);
        jPanel1.setBounds(10, 20, 960, 80);

        jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "CIDADES", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Showcard Gothic", 0, 16))); // NOI18N
        jPanel2.setFont(new java.awt.Font("Showcard Gothic", 0, 16));
        jPanel2.setName("jPanel2"); // NOI18N
        jPanel2.setOpaque(false);
        jPanel2.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        btnExcluir.setFont(new java.awt.Font("Berlin Sans FB Demi", 0, 16));
        btnExcluir.setIcon(new javax.swing.ImageIcon(getClass().getResource("/sistemachamados/view/resources/Xicon.png"))); // NOI18N
        btnExcluir.setText("Excluir");
        btnExcluir.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
        btnExcluir.setName("btnExcluir"); // NOI18N
        jPanel2.add(btnExcluir, new org.netbeans.lib.awtextra.AbsoluteConstraints(620, 160, 110, -1));

        jScrollPane1.setName("jScrollPane1"); // NOI18N

        tblCidades.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
        tblCidades.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {},
                {},
                {},
                {}
            },
            new String [] {

            }
        ));
        tblCidades.setCellSelectionEnabled(true);
        tblCidades.setName("tblCidades"); // NOI18N
        tblCidades.getTableHeader().setResizingAllowed(false);
        tblCidades.getTableHeader().setReorderingAllowed(false);
        tblCidades.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                tblCidadesMouseClicked(evt);
            }
        });
        tblCidades.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                tblCidadesKeyPressed(evt);
            }
        });
        jScrollPane1.setViewportView(tblCidades);

        jPanel2.add(jScrollPane1, new org.netbeans.lib.awtextra.AbsoluteConstraints(100, 40, 720, 100));

        btnIncluir.setFont(new java.awt.Font("Berlin Sans FB Demi", 0, 16)); // NOI18N
        btnIncluir.setIcon(new javax.swing.ImageIcon(getClass().getResource("/sistemachamados/view/resources/ViconUsado.png"))); // NOI18N
        btnIncluir.setText("Incluir");
        btnIncluir.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
        btnIncluir.setName("btnIncluir"); // NOI18N
        btnIncluir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnIncluirActionPerformed(evt);
            }
        });
        jPanel2.add(btnIncluir, new org.netbeans.lib.awtextra.AbsoluteConstraints(200, 160, 110, -1));

        btnAlterar.setFont(new java.awt.Font("Berlin Sans FB Demi", 0, 16)); // NOI18N
        btnAlterar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/sistemachamados/view/resources/!icon.png"))); // NOI18N
        btnAlterar.setText("Alterar");
        btnAlterar.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
        btnAlterar.setName("btnAlterar"); // NOI18N
        jPanel2.add(btnAlterar, new org.netbeans.lib.awtextra.AbsoluteConstraints(410, 160, 110, -1));

        getContentPane().add(jPanel2);
        jPanel2.setBounds(10, 104, 960, 210);

        jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "INCLUIR / ALTERAR CIDADE", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Showcard Gothic", 0, 16))); // NOI18N
        jPanel3.setFont(new java.awt.Font("Tempus Sans ITC", 1, 24));
        jPanel3.setName("jPanel3"); // NOI18N
        jPanel3.setOpaque(false);

        jLabel3.setFont(new java.awt.Font("Gautami", 3, 16));
        jLabel3.setText("Cidade");
        jLabel3.setName("jLabel3"); // NOI18N

        jLabel4.setFont(new java.awt.Font("Gautami", 3, 16));
        jLabel4.setText("Estado");
        jLabel4.setName("jLabel4"); // NOI18N

        txtCidade.setFont(new java.awt.Font("Tahoma", 0, 14));
        txtCidade.setName("txtCidade"); // NOI18N

        cmbEstado.setFont(new java.awt.Font("Century Gothic", 0, 14));
        cmbEstado.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Todos" }));
        cmbEstado.setName("cmbEstado"); // NOI18N

        btnCancelar.setFont(new java.awt.Font("Berlin Sans FB Demi", 0, 14)); // NOI18N
        btnCancelar.setText("Cancelar");
        btnCancelar.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
        btnCancelar.setName("btnCancelar"); // NOI18N
        btnCancelar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnCancelarActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
        jPanel3.setLayout(jPanel3Layout);
        jPanel3Layout.setHorizontalGroup(
            jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel3Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 59, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(txtCidade, javax.swing.GroupLayout.PREFERRED_SIZE, 212, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(39, 39, 39)
                .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 58, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(cmbEstado, javax.swing.GroupLayout.PREFERRED_SIZE, 192, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 162, Short.MAX_VALUE)
                .addComponent(btnCancelar, javax.swing.GroupLayout.PREFERRED_SIZE, 106, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(82, 82, 82))
        );
        jPanel3Layout.setVerticalGroup(
            jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel3Layout.createSequentialGroup()
                .addContainerGap(14, Short.MAX_VALUE)
                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(jLabel3)
                        .addComponent(jLabel4)
                        .addComponent(txtCidade, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(cmbEstado, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup()
                        .addComponent(btnCancelar)
                        .addContainerGap())))
        );

        getContentPane().add(jPanel3);
        jPanel3.setBounds(10, 320, 960, 80);

        jLabel5.setIcon(new javax.swing.ImageIcon(getClass().getResource("/sistemachamados/view/resources/FORM PRINCIPAL (FUNDOPANEL).png"))); // NOI18N
        jLabel5.setName("jLabel5"); // NOI18N
        getContentPane().add(jLabel5);
        jLabel5.setBounds(0, 0, 980, 460);

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void txtCidadePesqActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_txtCidadePesqActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_txtCidadePesqActionPerformed

    private void formComponentShown(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_formComponentShown
        btnIncluir.setEnabled(false);
        btnAlterar.setEnabled(false);
        btnExcluir.setEnabled(false);
        atualizarCidade();
        preencherCombo();
        verificaPermissao();
    }//GEN-LAST:event_formComponentShown

    //---- CADASTRA NOVAS CIDADES NO BD
    private void btnIncluirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnIncluirActionPerformed
        // TODO add your handling code here:
        Cidade novaCidade = new Cidade();
        Estado novoEstado = new Estado();
        if (txtCidade.getText().equals(""))
        {
            JOptionPane.showMessageDialog(null, "Preencha o campo Cidade.");
        }else{
            novaCidade.setDescr(txtCidade.getText());
            JOptionPane.showMessageDialog(null,"TXTCIDADE: "+txtCidade.getText());
            String estadoSelecionado = ((Estado)cmbEstado.getSelectedItem()).toString();
            JOptionPane.showMessageDialog(null,"ESTADO SELECIONADO: "+estadoSelecionado);
            
            novaCidade.setEstado(novoEstado.pesquisar(estadoSelecionado).get(0));
            JOptionPane.showMessageDialog(null,"DESC EST ENCONTRADO: "+novoEstado.pesquisar(estadoSelecionado).get(0).getDescr());
            
            if((novaCidade.salvar(usuarioLogado))==true){
                JOptionPane.showMessageDialog(null, "Inclusão bem sucedida.");
            }else{
                JOptionPane.showMessageDialog(null, "Inclusão mal sucedida, contate o administrador do sistema!");
            }
            limparCampos();
            atualizarCidade();
            preencherCombo();
        }

    }//GEN-LAST:event_btnIncluirActionPerformed

    private void limparCampos(){
        atualizarCidade();
        txtCidade.setText("");
        txtCidadePesq.setText("");
        cmbEstado.setSelectedIndex(0);
        cmbEstadoPesq.setSelectedIndex(0);
        
    }

    private void tblCidadesKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_tblCidadesKeyPressed
        // TODO add your handling code here:
    }//GEN-LAST:event_tblCidadesKeyPressed

    private void tblCidadesMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_tblCidadesMouseClicked
        // TODO add your handling code here:
    }//GEN-LAST:event_tblCidadesMouseClicked

    private void btnCancelarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCancelarActionPerformed
        // TODO add your handling code here:
        limparCampos();
    }//GEN-LAST:event_btnCancelarActionPerformed

    private void btnLimparActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnLimparActionPerformed
        // TODO add your handling code here:
        limparCampos();
    }//GEN-LAST:event_btnLimparActionPerformed

    //-------PREENCHER CAMPOS PARA ALTERAR UM REGISTRO
    public void preencherCampos()
    {
        if(tblCidades.getRowCount() > 0)
        {
            String cidade = tblCidades.getValueAt(tblCidades.getSelectedRow(),1).toString();

            txtCidade.setText(cidade);
        }
    }

    public void verificaPermissao(){
        JOptionPane.showMessageDialog(null,"Entrou nas permissoes");
        ArrayList<Acesso> listPermissao = usuarioLogado.getListAcessos();

        if(listPermissao != null){
            for (int i = 0; i < listPermissao.size(); i++) {
                String descr_pemissao=listPermissao.get(i).getDescr();

                if( descr_pemissao.equals("Incluir") ){
                    btnIncluir.setEnabled(true);
                }
                if( descr_pemissao.equals("Alterar") ){
                    btnAlterar.setEnabled(true);
                }
                if( descr_pemissao.equals("Excluir") ){
                btnExcluir.setEnabled(true);
                }
            }
        }
    }

    //------- PREENCHER A TABELA tblCidades
   private void atualizarCidade(){
        DefaultTableModel modelo = new DefaultTableModel();
        tblCidades.setModel(modelo);
        modelo.addColumn("Codigo");
        modelo.addColumn("Cidade");
        modelo.addColumn("Estado");
        ArrayList<Cidade> listCidades = Cidade.selecionar();
        for(int i=0; i < listCidades.size();i++)
        {
            Object[] linha = new Object[3];
            linha[0]=listCidades.get(i).getId();
            JOptionPane.showMessageDialog(null,"ID CITY: "+linha[0]);
            linha[1]=listCidades.get(i).getDescr();
            JOptionPane.showMessageDialog(null,"DESC CITY: "+linha[1]);
            linha[2]=listCidades.get(i).getEstado();
            JOptionPane.showMessageDialog(null,"ESTADO: "+linha[2]);

            modelo.insertRow(modelo.getRowCount(),linha);
        }

    }
    //PREENCHE OS CMBBOX COM OS ESTADOS
    private void preencherCombo(){
    Estado novoEstado = new Estado();
    ArrayList<Estado> listEstado = novoEstado.selecionar() ;

        if(listEstado != null)
        {
            cmbEstado.setModel(new DefaultComboBoxModel(listEstado.toArray()));
            cmbEstadoPesq.setModel(new DefaultComboBoxModel(listEstado.toArray()));
        }else{

            JOptionPane.showMessageDialog(this, "Houve um erro ao carregar os Estados. \n"+
                                            " Até resolver este problema, não será possível incluir Cidades no sistema.",
                                            "Erro ao carregar os Estados...",
                                            JOptionPane.ERROR_MESSAGE);
        }

    }


    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnAlterar;
    private javax.swing.JButton btnCancelar;
    private javax.swing.JButton btnExcluir;
    private javax.swing.JButton btnIncluir;
    private javax.swing.JButton btnLimpar;
    private javax.swing.JButton btnPesquisar;
    private javax.swing.JComboBox cmbEstado;
    private javax.swing.JComboBox cmbEstadoPesq;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTable tblCidades;
    private javax.swing.JTextField txtCidade;
    private javax.swing.JTextField txtCidadePesq;
    // End of variables declaration//GEN-END:variables

}
